package 基础.代码块;



class Cat{
    String name;
    int age;
    static String color;

    {
        this.name = "咪咪";
        this.age  = 1;
        Cat.color ="白色";//静态变量
        System.out.println("这是实例代码块");
    }
    static {
        color = "黑色";//因为先执行静态代码块，然后执行实例代码块
        System.out.println("这是静态代码块1");
    }
    static {
        System.out.println("这是静态代码块1");
    }
    //类似于
//    static {
//        System.out.println("这是静态代码块1");
//        System.out.println("这是静态代码块2");
//    }
    void show(){
        System.out.println("名字："+this.name+" 年龄:"+this.age+" 颜色："+this.color);
    }
    static void fun1(){
        System.out.println("hhh");
    }
}
public class 静态代码块 {
    public static void main(String[] args) {
        //1.
//        Cat cat1 = new Cat();//实例代码块一定是在实例化对象时候在才会被执行，只要类加载就会执行静态代码块
//        cat1.show();
//        System.out.println("=============");
//        Cat cat2 =new Cat();//由输出结果可以得到静态代码块只会执行一次
//        cat2.show();
        //2.
       Cat.fun1();//只要类加载静态代码块就会被执行

    }
}
